package com.edu.dao;
import java.sql.*;

public class BaseDao {
    public static final String URL = "jdbc:mysql://127.0.0.1:3306/library?";
    public static final String USER = "root";
    public static final String PASS = "123456";
    public static final String DRIVER = "com.mysql.jdbc.Driver";

    /**
     * 执行 添加 删除 修改的方法
     *
     * @param String SQL，Object占位符对应的值得数组 没有占位符传入null
     * @RETURN int 影响行数 -1没有执行
     */
    public static int executeUpdate(String sql, Object[] param) {
        Connection conn = null;
        PreparedStatement ps = null;
        try {
            conn = getConn();
            ps = conn.prepareStatement(sql);//预编译sql
            if (param != null) {
                for (int i = 0; i < param.length; i++) {
                    ps.setObject(i + 1, param[i]);
                }
            }
            int num = ps.executeUpdate();//执行sql
            return num;
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            closeAll(conn, ps);
        }
        return -1;
    }

    /**
     * 执行 添加 删除 修改的方法
     *
     * @param String SQL
     * @RETURN int 影响行数
     */
    public static int executeUpdate(String sql) {
        Connection conn = null;
        PreparedStatement ps = null;
        try {
            conn = getConn();
            ps = conn.prepareStatement(sql);//预编译sql
            int num = ps.executeUpdate();
            return num;
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            closeAll(conn, ps);
        }
        return -1;
    }

    /**
     * 获得数据库连接
     */
    public static Connection getConn() {
        try {
            Class.forName(DRIVER);
            Connection conn = DriverManager.getConnection(URL, USER, PASS);
            if (conn != null) {
                System.out.println("连接成功");
            } else {
                System.out.println("数据库连接失败");
            }
            return conn;
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return null;
    }

    /**
     * 释放资源Connection，PreparedStatement，ResultSet
     */
    public static void closeAll(Connection conn, Statement ps, ResultSet rs) {
        try {
            if (rs != null) {
                rs.close();
            }
            if (ps != null) {
                ps.close();
            }
            if (conn != null) {
                conn.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * 释放资源Connection，PreparedStatement
     */
    public static void closeAll(Connection conn, PreparedStatement ps) {
        try {
            if (ps != null) {
                ps.close();
            }
            if (conn != null) {
                conn.close();
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
